「 Velero 」快速开始
based on v1.6.3
概述
Velero 可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,可以在公有云或本地搭建的私有云环境安装 Velero,可以提供以下能力:
- 备份集群数据,并在集群故障的情况下进行还原
- 将集群资源迁移到其他集群
- 将生产集群复制到开发和测试集群
Velero 包含一个在集群上运行的服务器端和在本地运行的命令行客户端。
安装
install
1 | velero install |
可选的 flags 包括
名称 | 含义 |
---|---|
–backup-location-config | 描述 BackupStorageLocation 的配置信息 |
–bucket | BackupStorageLocation 中 bucket 信息,参考对象存储中的概念 和 no-default-backup-location 必须存在其一 |
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–crds-only | 仅生成 CRD 资源类别,默认为 false 主要用于已经安装 Velero 的集群升级 CRD |
–crds-version | 默认为 v1,指定 CRD 的 resource version |
–default-restic-prune-frequency | 对 Restic repo 执行 restic prune 的默认周期,默认为 1 周 |
–default-volumes-to-restic | 全局参数,表示是否由 Restic 备份所有的 Pod 卷,默认为 false |
–dry-run | 生成资源,但是不会实际创建 通常会和 -o 参数一起使用,指定默认输出格式 |
–image | Velero 和 Restic Pod 的镜像,默认和 Velero binary 版本一致 |
–label-columns | 在 table 样式下,自定义表格栏展示 |
–no-default-backup-location | 表示是否创建默认的 BackupStorageLocation,默认为 false 和 provider & bucket 必须存在其一 |
–no-secret | 不为 BackupStorageLocation 生成认证 Secret 和 –secret-file 必须存在其一 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–plugins | Velero plugin 的镜像 |
–pod-annotations | Velero 和 Restic Pod 中追加的注释信息 |
–prefix | BackupStorageLocation 中 prefix 信息,参考对象存储中的概念 |
–provider | 指定 StorageProvider,例如 aws, gcp 等 和 no-default-backup-location 必须存在其一 |
–restic-pod-cpu-limit/–restic-pod-cpu-request/ –restic-pod-mem-limit/–restic-pod-mem-request |
Restic Pod 的资源限制信息 |
–restore-only | 是否以 Restore-Only 形式运行服务,即 Backup、Schedule 和 GC controller 都会被禁用,仅启动 Restore Controller 参数已经废弃,取而代之的是将 BackupStorageLocation 设为 ReadOnly |
–sa-annotations | Velero 的 ServiceAccount 中追加的注释信息 |
–secret-file | BackupStorageLocation 所需要的认证文件 Velero 会将该文件以 Secret 形式创建,并挂载在 Velero 的 /cloud/credentials;和 –no-secret 必须存在其一 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
–snapshot-location-config | 描述 VolumeSnapshotLocation 的配置信息 |
–use-restic | 是否同时创建 Restic 服务 |
–use-volume-snapshots | 是否自动创建一个 SnapshotLocation,默认为 true |
–velero-pod-cpu-limit/–velero-pod-cpu-request/ –velero-pod-mem-limit/–velero-pod-mem-request |
Velero Pod 的资源限制信息 |
–wait | 阻塞直至 Velero deployment 是 Ready 手动退出等待可以 ctrl-c,并不会影响到安装流程 |
uninstall
1 | velero uninstall |
可选的 flags 包括
名称 | 含义 |
---|---|
–force | 是否强制卸载,忽略确认信息,默认为 false |
–wait | 阻塞直至 Velero 被完全卸载 手动退出等待可以 ctrl-c,并不会影响到卸载流程 |
Customize
Velero Server
以下参数均为 Velero 服务启动时的额外参数
部分参数可以通过 install 指定,而其余参数只能通过定制化 Velero Deployment 的启动参数
名称 | 含义 |
---|---|
–log-level | 日志级别,可选的有 debug、info、warn、error、fatal、panic 和 trace,默认为 Info 在安装 velero 服务时的全局参数 -v 代表时 velero 调用其他第三方库时透传下去的日志级别,而非 velero 本身的日志级别,第三方库采用的日志库通常为 klog 或者 glog 等,通过 -v 指定日志级别,高于该级别的日志不会输出,如 -v = 5。 Velero 采用的日志库为 logrus,有 debug 、 info 、 warn 、 error 、 fatal 、 panic 和 trace,通过该参数指定,低于该级别的日志不会输出。 |
–log-format | 日志格式,可选的有 text 和 json,默认为 text |
–plugin-dir | Velero Plugins 的存放位置,默认为 /plugins |
–metrics-address | 暴露至 Prometheus 的端口,默认为 8085 |
–backup-sync-period | 备份同步的时间间隔,默认为 1 分钟,设置为 0 时表示禁用同步 |
–restic-timeout | Pod 卷备份与恢复的执行超时时间,默认为 240 分钟 |
–restore-only | 是否以 Restore-Only 形式运行服务,即 Backup、Schedule 和 GC controller 都会被禁用,仅启动 Restore Controller 参数已经废弃,取而代之的是将 BackupStorageLocation 设为 ReadOnly |
–disable-controllers | 禁止启动的 Controller,可选的有 Backup、BackupDeletion、BackupSync、DownloadRequest、GarbageCollection、ResticRepo、Restore、Schedule 和 ServerStatusRequest,默认不禁止 |
–restore-resource-priorities | 期望的资源恢复顺序,任何不在列表中的资源都将在优先资源之后按字母顺序恢复,默认恢复顺序为 1. customresourcedefinitions 2. namespaces 3. storageclasses 4. volumesnapshotclass.snapshot.storage.k8s.io 5. volumesnapshotcontents.snapshot.storage.k8s.io 6. volumesnapshots.snapshot.storage.k8s.io 7. persistentvolumes 8. persistentvolumeclaims 9. secrets 10. configmaps 11. serviceaccounts 12. limitranges 13. pods 14. replicasets.apps 15. clusters.cluster.x-k8s.io 16. clusterresourcesets.addons.cluster.x-k8s.io |
–default-backup-storage-location | 默认的 BackupStorageLocation 名称,默认为 default 参数已经废弃,取而代之的是将 BackupStorageLocation 的 –default 设置为 true |
–store-validation-frequency | BackupStorageLocation 的检验时间间隔,默认为 1 分钟,设置为 0 时表示禁用校验 |
–default-volume-snapshot-locations | SnapshotProvider 的信息,例如 provider1:location-01,provider2:location-02 |
–client-qps | 访问 Kubernetes API 的最大 QPS,默认为 20,如果为 0,则置为 5 详情查看 client-go |
–client-burst | 访问 Kubernetes API 的最大突发请求量,默认为 30,如果为 0,则置为 10 详情查看 client-go |
–profiler-address | pprof 信息的地址,默认为 localhost:6060 |
–terminating-resource-timeout | 恢复期间等待 PV 和 namespace 创建完成的超时时间,默认为 10 分钟 |
–default-backup-ttl | backup 的过期时间,默认为 30 天 |
–default-restic-prune-frequency | 对 Restic repo 执行 restic prune 的周期,默认为 1 周 |
–default-volumes-to-restic | 是否由 Restic 备份所有的 Pod 卷,默认为 false |
Restic Server
以下参数均为 Restic 服务启动时的额外参数
由于 Restic 不存在安装命令,因此只能通过定制化 Restic DaemonSet 的启动参数
名称 | 含义 |
---|---|
–log-level | 日志级别,可选的有 debug、info、warn、error、fatal、panic 和 trace,默认为 Info 在安装 velero 服务时的全局参数 -v 代表时 velero 调用其他第三方库时透传下去的日志级别,而非 velero 本身的日志级别,第三方库采用的日志库通常为 klog 或者 glog 等,通过 -v 指定日志级别,高于该级别的日志不会输出,如 -v = 5。 Velero 采用的日志库为 logrus,有 debug 、 info 、 warn 、 error 、 fatal 、 panic 和 trace,通过该参数指定,低于该级别的日志不会输出。 |
–log-format | 日志格式,可选的有 text 和 json,默认为 text |
仓库
StorageProvider
StorageProvider 用于存放备份过程中产生的元数据信息、由 Restic 备份的卷数据信息、备份和恢复的任务日志等,对应的资源对象为 BackupStorageLocation。
create
1 | velero backup-location create |
可选的 flags 包括
名称 | 含义 |
---|---|
–access-mode | 访问权限,默认为 ReadWrite,可选值有 ReadWrite 和 ReadOnly |
–backup-sync-period | 备份同步的时间间隔,默认为 1 分钟,设置为 0 时表示禁用同步 |
–bucket | BackupStorageLocation 中 bucket 信息,参考对象存储中的概念 |
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–config | 描述 BackupStorageLocation 配置信息 |
–credential | 连接 BackupStorageLocation 所需要的认证信息 格式为 key-value,key 为 K8s secret 的名称,value 为 secret 中的 key,仅支持一对 |
–default | 是否为默认的 BackupStorageLocation |
–label-columns | 在 table 样式下,自定义表格栏展示 |
–labels | 设置创建出来的 BackupStorageLocation 对象的标签信息 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–prefix | BackupStorageLocation 中 prefix 信息,参考对象存储中的概念 |
–provider | 指定 StorageProvider,例如 aws, gcp 等 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
–validation-frequency | BackupStorageLocation 的检验时间间隔,默认为 1 分钟,设置为 0 时表示禁用校验 |
delete
1 | velero backup-location delete |
可选的 flags 包括
名称 | 含义 |
---|---|
–all | 删除所有 BackupStorageLocation 对象 |
–confirm | 确认删除交互 |
–selector | 删除满足标签选择的所有 BackupStorageLocation 对象 |
name,–all 和 –selector 仅能指定一个
get
1 | velero backup-location get |
可选的 flags 包括
名称 | 含义 |
---|---|
–default | 仅展示默认的 BackupStorageLocation |
–label-columns | 在 table 样式下,自定义表格栏展示 |
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–selector | 可以通过标签选择器展示符合要求的 BackupStorageLocation 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
set
1 | velero backup-location set |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–credential | 连接 BackupStorageLocation 所需要的认证信息 格式为 key-value,key 为 K8s secret 的名称,value 为 secret 中的 key,仅支持一对 |
–default | 设置为默认的 BackupStorageLocation 默认的仅能有一个,其余的会被设置为 false |
SnapshotProvider
SnapshotProvider 用于存放备份过程中的卷快照数据,数据源自于 SnapshotProvider Plugin。
create
1 | velero snapshot-location create |
可选的 flags 包括
名称 | 含义 |
---|---|
–config | 描述 VolumeSnapshotLocation 的配置信息 |
–label-columns | 在 table 样式下,用于自定义表格栏信息 |
–labels | 设置创建出来的 VolumeSnapshotLocation 对象的标签信息 |
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–provider | 指定 SnapshotProvider,例如 aws, gcp 等 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
get
1 | velero snapshot-location get |
可选的 flags 包括
名称 | 含义 |
---|---|
–label-columns | 在 table 样式下,自定义表格栏信息展示 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–selector | 可以通过标签选择器获取符合要求的 VolumeSnapshotLocation 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
ResticRepository
目前 Velero 仅支持 Restic AWS、AZURE 和 GCP 作为卷数据存储,数据的采集和传输均由 Velero Restic 操作,目标会上传至卷数据存储,对应的资源对象为 ResticRepository。
repo
get
1 | velero restic repo get |
可选的 flags 包括
名称 | 含义 |
---|---|
–label-columns | 在 table 样式下,自定义表格栏信息展示 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–selector | 可以通过标签选择器获取符合要求的 ResticRepository 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
插件
add
1 | velero plugin add |
name 就是镜像地址
可选的 flags 包括
名称 | 含义 |
---|---|
–image-pull-policy | plugin 镜像的拉取策略,可选的有 Always,IfNotPresent 和 Never,默认为 IfNotPresent |
get
1 | velero plugin get |
可选的 flags 包括
名称 | 含义 |
---|---|
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–timeout | 命令输出的超时时间,默认为 5 秒钟 |
remove
1 | velero plugin remove |
备份
即时备份
即时备份(on-demand)也就是单次的备份任务,对应的资源对象为 Backup。
create
1 | velero backup create <name> |
可选的 flags 包括
名称 | 含义 |
---|---|
–default-volumes-to-restic | 默认为 true,即由 restic 备份所有的 Pod 卷 如果不指定,则以全局的为主 |
–include-namespaces / –exclude-namespaces | 显式包含/排除的命名空间,支持逗号分割 |
–include-resources / –exclude-resources | 显式包含/排除的资源,支持逗号分割 |
–from-schedule | 基于某一个定时备份创建一次即时备份 指定此参数时,其他的 filter flag 均会失效,并以 Schedule 的模板为准;不指定备份名称时会以 schedule-timestamp 作为备份任务名称 |
–include-cluster-resources | 是否备份集群级别的资源,默认为 true 即使开启了此特性,如果并未备份全量 namespaces 的资源,仍然不会备份集群级别资源 |
–label-columns | 在 table 样式下,用于自定义表格栏信息 |
–labels | 设置创建出来的 Backup 对象的标签信息 |
–ordered-resources | 指定备份的顺序 集群级别的资源格式为 resource name ,非集群级别的资源格式为 namespace/resource name ,例如 pods=ns1/pod1,ns1/pod2;persistentvolumeclaims=ns1/pvc4,ns1/pvc8 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–selector | 可以通过标签选择器备份符合要求的资源 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
–snapshot-volumes | 默认为 true,即备份时,默认会对 PV 资源调用 SnapshotProvider 打快照 |
–storage-location | 指定 BackupStorageLocation,仅支持单个 |
–ttl | 过期时间,默认 720 小时 |
–volume-snapshot-locations | 指定 VolumeSnapshotLocation,支持多个 |
–wait | 阻塞直至备份状态不再是 New 或者 InProgress 手动退出等待可以 ctrl-c,并不会影响到备份任务 |
delete
velero backup 的删除涉及到存储在远端数据的同步删除,因此并非单纯删除 Backup 对象,而是借助于 DeleteBackupRequest 对象。
1 | velero backup delete |
可选的 flags 包括
名称 | 含义 |
---|---|
–all | 删除所有资源 |
–confirm | 确认删除交互 |
–selector | 删除满足标签选择的所有资源 |
name,–all 和 –selector 仅能指定一个
describe
1 | velero backup describe |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–details | 更详细的信息输出 |
–insecure-skip-tls-verify | 是否跳过 TLS 验证,默认为 false |
–selector | 可以通过标签选择器获取符合要求的 Backup 对象 |
download
1 | velero backup download |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–force | 下载文件存在则覆盖 |
–insecure-skip-tls-verify | 是否跳过 TLS 验证,默认为 false |
–output | 文件保存的路径,默认为当前目录,名称为 <backup>-data.tar.gz |
–timeout | 等待下载的超时时间,默认为 1m |
get
1 | velero backup get |
可选的 flags 包括
名称 | 含义 |
---|---|
–label-columns | 在 table 样式下,自定义表格栏展示 |
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–selector | 可以通过标签选择器展示符合要求的 Backup 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
logs
1 | velero backup logs |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–insecure-skip-tls-verify | 是否跳过 TLS 验证,默认为 false |
–timeout | 等待获取日志的超时时间,默认为 1 分钟 |
定时备份
定时备份(schedule)是符合特定时间规律,由 Velero 控制面负责触发的备份任务,对应的资源对象为 Schedule。
create
1 | velero schedule create |
可选的 flags 包括
名称 | 含义 |
---|---|
–default-volumes-to-restic | 是否由 Restic 备份所有的 Pod 卷,默认为 true 优先级小于 velero install 中的对应参数 |
–include-cluster-resources | 是否备份集群级别的资源,默认为 true 即使开启了此特性,如果并未备份全量 namespaces 的资源,仍然不会备份集群级别资源 |
–include-namespaces / –exclude-namespaces | 显式包含/排除的命名空间,支持逗号分割 |
–include-resources / –exclude-resources | 显式包含/排除的资源,支持逗号分割 |
–label-columns | 在 table 样式下,自定义表格栏展示 |
–labels | 设置创建出来的 Backup 对象的标签信息 |
–ordered-resources | 指定备份的顺序 集群级别的资源格式为 resource name,非集群级别的资源格式为 namespace/resource name,例如 pods=ns1/pod1,ns1/pod2;persistentvolumeclaims=ns1/pvc4,ns1/pvc8 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–schedule | 定时规则的表达式 不仅支持 cron 表达式,还支持易读的形式,例如 “0 */6 * * *” 和 @every 6h |
–selector | 可以通过标签选择器备份符合要求的资源 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
–snapshot-volumes | 备份时,是否会对 PV 资源调用 SnapshotProvider 打快照,默认为 true, |
–storage-location | 指定 BackupStorageLocation,仅支持单个 |
–ttl | 过期时间,默认 720 小时 |
–use-owner-references-in-backup | 由 Schedule 创建出来的 Backup 是否带有 OwnerReferences 信息,默认为 false, |
–volume-snapshot-locations | 卷快照的存储后端,支持多个 |
delete
1 | velero schedule delete |
可选的 flags 包括
名称 | 含义 |
---|---|
–all | 删除所有 Schedule 对象 |
–confirm | 确认删除交互 |
–selector | 删除满足标签选择器的所有 Schedule 对象 |
describe
1 | velero schedule describe |
可选的 flags 包括
名称 | 含义 |
---|---|
–selector | 可以通过标签选择器获取符合要求的 Schedule 对象 |
get
1 | velero schedule get |
可选的 flags 包括
名称 | 含义 |
---|---|
–label-columns | 在 table 样式下,自定义表格栏展示 |
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–selector | 可以通过标签选择器展示符合要求的 Schedule 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
恢复
create
1 | velero restore create |
可选的 flags 包括
名称 | 含义 |
---|---|
–allow-partially-failed | 在开启 –from-schedule 时,是否允许从部分失败的 Backup 中恢复 |
–include-namespaces / –exclude-namespaces | 显式包含/排除的命名空间,支持逗号分割 |
–include-resources / –exclude-resources | 显式包含/排除的资源,支持逗号分割 |
–from-backup | 指定从哪一个 Backup 中恢复 |
–from-schedule | 指定从哪一个 Schedule 中恢复 从 Schedule 最新创建的 Backup 恢复 |
–include-cluster-resources | 默认为 true,即恢复集群级别的资源 即使开启了此特性,如果并未恢复全量 namespaces 的资源,仍然不会恢复集群级别资源 |
–label-columns | 在 table 样式下,自定义表格栏展示 |
–labels | 设置创建出来的 Restore 对象的标签信息 |
–namespace-mappings | 恢复时,命名空间的映射关系 例如,src1:dst1,src2:dst2 |
–output | dry run,指定生成配置文件的格式,可选的有 table,json 和 yaml |
–preserve-nodeports | 恢复时,是否保留 Service 资源的 NodePort 信息,默认为 true, |
–restore-volumes | 恢复时,是否从快照中恢复卷数据,默认为 true |
–selector | 可以通过标签选择器恢复符合要求的资源 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
–wait | 阻塞直至恢复状态不再是 New 或者 InProgress 手动退出等待可以 ctrl-c,并不会影响到恢复任务 |
delete
1 | velero restore delete |
可选的 flags 包括
名称 | 含义 |
---|---|
–all | 删除所有 Restore 对象 |
–confirm | 确认删除交互 |
–selector | 删除满足标签选择器的所有 Restore 对象 |
describe
1 | velero restore describe |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–details | 更详细的信息输出 |
–insecure-skip-tls-verify | 是否跳过 TLS 验证,默认为 false |
–selector | 可以通过标签选择器获取符合要求的 Restore 对象 |
get
1 | velero restore get |
可选的 flags 包括
名称 | 含义 |
---|---|
–label-columns | 在 table 样式下,自定义表格栏展示 |
–output | 格式化输出的样式,可选的有 table,json 和 yaml,默认为 table |
–selector | 可以通过标签选择器展示符合要求的 Restore 对象 |
–show-labels | 在 table 样式下,最后一栏展示标签信息 |
logs
1 | velero restore logs |
可选的 flags 包括
名称 | 含义 |
---|---|
–cacert | 连接 BackupStorageLocation 时所需要的 TLS 证书 |
–insecure-skip-tls-verify | 是否跳过 TLS 验证,默认为 false |
–timeout | 等待获取日志的超时时间,默认为 1 分钟 |